package com.ahora.org.ejb.facade.interfaces;

import java.util.List;

import javax.ejb.Local;

import com.ahora.org.ejb.jpa.beans.AreaDTO;
import com.ahora.org.ejb.jpa.beans.HistorialExpedientesDTO;
import com.ahora.org.ejb.jpa.beans.HojaRutaDTO;
import com.ahora.org.ejb.jpa.beans.ProcesoDTO;
import com.ahora.org.ejb.jpa.beans.RequisitoProcesosDTO;
import com.ahora.org.ejb.jpa.entities.ApeRecProceso;
import com.ahora.org.ejb.jpa.entities.Area;
import com.ahora.org.ejb.jpa.entities.DetalleProcesoRequisitos;
import com.ahora.org.ejb.jpa.entities.FlujoProceso;
import com.ahora.org.ejb.jpa.entities.Persona;
import com.ahora.org.ejb.jpa.entities.Proceso;
import com.ahora.org.ejb.jpa.entities.Requisitos;
import com.ahora.org.ejb.jpa.entities.Usuario;

@Local
public interface ProcesoFacade {
	public abstract Proceso buscarProcesoToDetalle(int codigo);

	public abstract List<DetalleProcesoRequisitos> listarDetalleRequisitoProceso(
			int codigo) throws Exception;

	public abstract String registrarFlujoYProceso(Proceso miproceso,
			List<FlujoProceso> lstFlujoProcesos,
			List<Requisitos> listaRequisitos,
			ApeRecProceso apelacionReconsideracionProceso, Usuario objUsuario);

	public abstract List<FlujoProceso> listarlosFlujosparaActualizar(
			int intProceso);

	public abstract String EliminarFlujoYProceso(int idProceso);

	public abstract List<ProcesoDTO> listarProcesosMantenimiento();

	public abstract List<HistorialExpedientesDTO> listasProcesosHistorialRutaExpediente(
			Persona objPersona);

	public abstract String primerlistado(int idExpediente,
			int idUsuarioEncargadoArea);

	public abstract List<HojaRutaDTO> segundolistado(int idExpediente);

	public abstract String modificarFlujoYProceso(Proceso miproceso,
			List<AreaDTO> listaFlujoProcesos, Usuario objUsuario,
			List<Requisitos> listaRequisitos);

	public abstract List<AreaDTO> listarEncargado();

	public abstract Proceso buscarProcesoToDetalleSinUit(int codigo);

	public abstract List<Requisitos> listaRequisitosDetalleActualizar(
			int intProceso);

	public abstract List<Area> listarAreas();

	public abstract List<Proceso> listarTodosProcesos(String proceso, int area);

	public abstract List<RequisitoProcesosDTO> listaRequisitosFaltantes(
			int idExpediente);

	public abstract List<Object> buscarProceso(int codProcedimiento);

	public abstract Usuario validarUsuariosTecnicos(int idArea);

	public abstract Usuario validarUsuarioSupervisor(int idArea);

	public abstract String validarNombreProceso(String s);

	public abstract String guardarPaso1(Proceso miproceso, Usuario objUsuario);

	public abstract String guardarPaso2(Proceso miproceso,
			List<FlujoProceso> lstFlujoProcesos, Usuario objUsuario);

	public abstract String guardarPaso3(Proceso miproceso,
			List<FlujoProceso> lstFlujoProcesos,
			List<Requisitos> listaRequisitos, Usuario objUsuario);

	public abstract String guardarPaso4(Proceso miproceso,
			List<FlujoProceso> lstFlujoProcesos,
			List<Requisitos> listaRequisitos,
			ApeRecProceso apelacionReconsideracionProceso, Usuario objUsuario);
	
	public abstract Proceso buscarServicio(int idServicio);

	public abstract List<FlujoProceso> buscarLstFlujoProcesoServicio(int idServicio);

	public abstract List<Requisitos> buscarLstRequisitosServicio(int idServicio);

	public abstract ApeRecProceso buscarApeRecServicio(int idServicio);
	
	public abstract String habilitarServicio(int idServicio);
	
	public abstract String update(Proceso miproceso, List<FlujoProceso> lstFlujoProcesos,
			List<Requisitos> listaRequisitos,
			ApeRecProceso apelacionReconsideracionProceso, Usuario objUsuario);
}
